str1='abcdefghi'
#查找操作
print(str1.find('f'))
print(str1.find('ab'))#返回的是ab所在字符串的位置
print(str1.find('ak'))#没有ak返回-1
print(str1.replace('f','g'))#返回的是更换后字符串
print(str1.replace('fg','mn'))
str2="hello\n my\n name\n is\n liming"
print(str2.split(','))
print(str2)
print(str2.split())#判断str2中的空格并将其分隔开
str_list=str2.splitlines()
print(str_list)

str_result=' '.join(str_list)
print(str_result)
print("*"*100)
test=['my','name','is','张三']
test_result=' '.join(test)
print(test_result)
print("="*100)
#将字符串翻转
'''
def fun1():
    test = input("请输入一个英文单词：")
    test_list=list(test)
    test_list.reverse()#将列表中的内容进行反转返回值为空
    print(test_list)
    result=''.join(test_list)
    print(result)
fun1()
'''
print("*"*100)
num_str='0123456789'
print(num_str[2:6])
print(num_str[2:])
print(num_str[:])
print(num_str[:6])
print(num_str[::2])
print(num_str[1::2])

print(num_str[::-1])#字符串逆序
print(num_str[-2::-2])
#集合
my_set={}#代表空字典
my_set=set()#代表空集合
my_set={'apple','banana','cherry'}
print('apple' in my_set)
x={'apple','baby','google'}
print(my_set.difference(x))
print(my_set)
my_set.difference_update(x)#原来的集合发生了改变，返回值为none
print(my_set)
print("="*100)
a=set('abracadabra')
b=set('alacazam')
print(a,b)
print(a-b)#difference
print(a|b)#a与b的并集
print(a&b)#a与b的交集
print(a^b)
#容器的组合练习
print("_"*100)
'''
a=(1,2,3,4)

b=('a','b','c','d')'''
a={'a','b','c','d'}
b=(1,2,3,4)
print(list(zip(a,b)))#a和b进行配对
print(set(zip(a,b)))
print("*"*100)
#字典生成式方式1
seasons=['spring','summer','fall','winter']
print({v:i for i,v in enumerate(seasons)})
print("&"*100)
for i,v in enumerate(seasons):#返回（index value）类似的元组
    print(i,v)
my_dict={v:i for i,v in enumerate(seasons)}
print(my_dict)
print("+"*100)
u=('a','b','c')
v=(1,2,3)

for index,value in list(zip(u,v)):
    print(index,value)
my_dict1={index:value for index,value in list(zip(u,v))}
print(my_dict1)
print("_"*100)
a=('a','b','c','d')
b=(1,2,3,4)
print(list(zip(a,b)))
mY_dict2={index:value for index,value in list(zip(a,b))}
print(mY_dict2)
my_dict3={value:index for index,value in enumerate(a)}
 #多值参数 函数的参数个数不确定
 #python中有两种多值参数，参数名加一个*,可以接收元组，加两个*可以接收字典
'''
def demo(num,*args,**kwargs):
     print(num)
     print(args)#args吃掉所有的位置参数
     print(kwargs)#kwargs吃掉所有的kwargs参数
demo(1,2,3,4,5,name='小明',gender='True')
'''
print('&'*100)
# 多值参数 函数的参数个数不确定
# python中有两种多值参数，参数名加一个*,可以接收元组，加两个*可以接收字典
def demo1(num,*args,**kwargs):
    print(num)
    print(args)
    print(kwargs)
def demo(num,*args,**kwargs):
    demo1(num,*args,**kwargs)#拆包
demo(1,2,3,4,5,name='小明',gender='True')
#
print("*"*100)
def step(n):
    if n==1 or n==2:
        return n
    return step(n-1)+step(n-2)

while True:
  n=int(input('请输入台阶数目：'))
  print(step(n))


